<?php

require_once '../model/dao/ConectaDB.php';
require_once '../model/dao/DBUsuario.php';
require_once 'Professor.php';
require_once 'Aluno.php';

/**
 * Classe responsável por tratar o estado e comportamento dos objetos de tipo usuário.
 * É uma classe geral, que pode ser especializada em Aluno ou Professor.
 * @author gabrielbmoro
 */
class Usuario {

    private $senha;
    private $email;
    private $nome;
    private $dbUsuario;

    /* Método responsável por inicializar dados do usuário. */

    public function __construct($senha, $email, $nome) {
        $this->senha = $senha;
        $this->email = $email;
        $this->nome = $nome;
        $this->dbUsuario = new DBUsuario();
    }

    /* Método responsável por logar em sistema o usuário */

    public function logarEmSistema($campoCondicional) {
        $papel = null;
        $tipoProfessor = null;
        $usrObj = null;

        $varArray = $this->dbUsuario->recuperar($campoCondicional);
        session_start("login");

        if ($varArray[0] == 0 && $varArray[1] != null) {
            if ($_SESSION['usuario'] == $this->email && $_SESSION['tipo'] == $varArray[1]) {
                return true;
            } else {
                $_SESSION['usuario'] = $this->email;
                $_SESSION['tipo'] = $varArray[1];
                if ($_SESSION['tipo'] == "Professor") {
                    $professor = new Professor(null, null, null, null, null, null, null, null);
                    $_SESSION['permissao'] = $professor->getTipoPermissao($_SESSION['usuario']);
                }else{
                    $_SESSION['usuario'] = $this->email;
                    $_SESSION['tipo'] = $varArray[1];
                    if ($_SESSION['tipo'] == "Aluno") {
                    $professor = new Aluno(null, null, null, null);
                    $_SESSION['permissao'] = $aluno->getTipoPermissao($_SESSION['usuario']);
                    } return true;
                }
                return true;
            }
        } else
            return false;
    }

    /* Método responsável por retornar a senha */

    public function getSenha() {
        return $this->senha;
    }

    /* Método responsável por retornar o email */

    public function getEmail() {
        return $this->email;
    }

    /* Método responsável por retornar o nome */

    public function getNome() {
        return $this->nome;
    }

    /* Método responsável por alterar a senha */

    public function setSenha($senha) {
        $this->senha = $senha;
    }

    /* Método responsável por alterar o email */

    public function setEmail($email) {
        $this->email = $email;
    }

    /* Método responsável por alterar o nome */

    public function setNome($nome) {
        $this->nome = $nome;
    }

    public function deslogar() {
        session_destroy();
        return false;
    }

}
